﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization;
using System.Collections;
using System.Xml.Serialization;
using System.Security.Cryptography;
using System.Diagnostics;
using Microsoft.Reporting.WinForms;


namespace ВУИ
{
    public partial class Form1 : Form
    {
        public List<Patient> lPatient;
        public List<EpiAtt> lEpiAtt;
        public List<etiologAtt> lEtiAtt;
        public List<organ> lOrgan;
        public List<Osmotr> lSdn;
        public List<OAKNorm> lON;
        public List<Prirost> lAV;
        public List<Prirost> lAR;
        public log login;
        public int type;
        public fLogin fl;
        public Lab ef;
        public Dinam dF;
        
        static string getMd5Hash(string input)
        {
            MD5 md5Hasher = MD5.Create();
            byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
            StringBuilder sBuilder = new StringBuilder();
            for (int i = 0; i < data.Length; i++)
            {
                sBuilder.Append(data[i].ToString("x2"));
            }
            return sBuilder.ToString();
        }

        static bool verifyMd5Hash(string input, string hash)
        {
            string hashOfInput = getMd5Hash(input);
            StringComparer comparer = StringComparer.OrdinalIgnoreCase;
            if (0 == comparer.Compare(hashOfInput, hash))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        public Form1()
        {
            InitializeComponent();
            lPatient = new List<Patient>();
            lEpiAtt = new List<EpiAtt>();
            lEtiAtt = new List<etiologAtt>();
            lOrgan = new List<organ>();
            lSdn = new List<Osmotr>();
            lON = new List<OAKNorm>();
            lAV = new List<Prirost>();
            lAR = new List<Prirost>();
            XmlSerializer xml;
            FileStream stream;
           
            if (File.Exists("Login.xml"))
            {
                xml = new XmlSerializer(typeof(log));
                stream = new FileStream("Login.xml", FileMode.Open, FileAccess.Read);
                login = (log)xml.Deserialize(stream);
                stream.Close();
            }
            else
            {
                login = new ВУИ.log();
                login.adress = "";
                login.db= "";
                login.user= "";
                login.pass = "";
                login.type = true;
            }
            fl = new fLogin(this);
            fl.textBox1.Text = login.user;
            fl.textBox2.Text = login.adress;
            fl.maskedTextBox1.Text = login.pass;
            if (login.type)
                fl.comboBox1.SelectedIndex = 0;
            fl.ShowDialog();
        }

        public void autosave()
        {
           if (type == 0)
            {
            autosave a = new autosave();
            a.date = DateTime.Now;
            a.log = login;
            XmlSerializer xml;
            FileStream stream;
            xml = new XmlSerializer(typeof(autosave));
            stream = new FileStream("autosave.xml", FileMode.Create, FileAccess.ReadWrite);
            xml.Serialize(stream, a);
            stream.Close();
            Directory.CreateDirectory("temp");

                xml = new XmlSerializer(typeof(List<Patient>));
                stream = new FileStream("temp.temp", FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, lPatient);
                stream.Close();
                EnCrypFile("temp.temp", "temp\\Patient.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");

                xml = new XmlSerializer(typeof(List<EpiAtt>));
                stream = new FileStream("temp.temp", FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, lEpiAtt);
                stream.Close();
                EnCrypFile("temp.temp", "temp\\EpiAtt.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");

                xml = new XmlSerializer(typeof(List<etiologAtt>));
                stream = new FileStream("temp.temp", FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, lEtiAtt);
                stream.Close();
                EnCrypFile("temp.temp", "temp\\EtiAtt.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");

                xml = new XmlSerializer(typeof(List<organ>));
                stream = new FileStream("temp.temp", FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, lOrgan);
                stream.Close();
                EnCrypFile("temp.temp", "temp\\Organ.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");

                xml = new XmlSerializer(typeof(List<Osmotr>));
                stream = new FileStream("temp.temp", FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, lSdn);
                stream.Close();
                EnCrypFile("temp.temp", "temp\\Sdn.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");

                xml = new XmlSerializer(typeof(List<OAKNorm>));
                stream = new FileStream("temp.temp", FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, lON);
                stream.Close();
                EnCrypFile("temp.temp", "temp\\LON.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");

                xml = new XmlSerializer(typeof(List<Prirost>));
                stream = new FileStream("temp.temp", FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, lAV);
                stream.Close();
                EnCrypFile("temp.temp", "temp\\LAV.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");

                xml = new XmlSerializer(typeof(List<Prirost>));
                stream = new FileStream("temp.temp", FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, lAR);
                stream.Close();
                EnCrypFile("temp.temp", "temp\\LAR.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
            }
        }

        public void ref_Lab()
        {
            int top = ef.Top;
            int left = ef.Left;
            ef.Hide();
            ef.Close();
            
            if (Convert.ToInt32(DetiTre.SelectedNode.Tag) >= 0)
            {
                ef = new Lab(Convert.ToInt32(DetiTre.SelectedNode.Tag), this);
                ef.Top = top;
                ef.Left = left;
                ef.ShowDialog();
            }
        }

        public void ref_sdn()
        {
            int top = dF.Top;
            int left = dF.Left;
            dF.Hide();
            dF.Close();
            if (Convert.ToInt32(DetiTre.SelectedNode.Tag) >= 0)
            {
                dF = new  Dinam(Convert.ToInt32(DetiTre.SelectedNode.Tag), this);
                dF.Top = top;
                dF.Left = left;
                dF.ShowDialog();
            }
        }

        //Процедура обновляющие все визуальные компоненты при изменени данных
        public void refresh()
        {
            //Обновление списка детей на главной форме
            TreeNode temp;
            DetiTre.Nodes[0].Nodes.Clear();
                    foreach (Patient p in lPatient)
            {
                if (p.This != null)
                {
                    temp = new TreeNode();
                    temp.Text = p.This.get();
                    temp.Tag = p.id;
                    if ((p.This.Name.ToLower().IndexOf(toolStripTextBox1.Text.Trim().ToLower()) >= 0) || (p.This.Patronymic.ToLower().IndexOf(toolStripTextBox1.Text.Trim().ToLower()) >= 0) || (p.This.Surname.ToLower().IndexOf(toolStripTextBox1.Text.Trim().ToLower()) >= 0) || (toolStripTextBox1.Text.Trim()==""))
                    DetiTre.Nodes[0].Nodes.Add(temp);
                }
            }
        }

        public void logining(log log)
        {
            login = log;
            XmlSerializer xml;
            FileStream stream;
            xml = new XmlSerializer(typeof(log));
            stream = new FileStream("Login.xml", FileMode.Create, FileAccess.ReadWrite);
            xml.Serialize(stream, login);
            stream.Close();
            type = 3;
            if (login.type)
            {
                Directory.CreateDirectory("cript");
                if (File.Exists(login.adress+"\\Users.xml"))
                {                
                    xml = new XmlSerializer(typeof(List<login>));
                    stream = new FileStream(login.adress + "\\Users.xml", FileMode.Open, FileAccess.Read);
                    List<login> u = (List<login>)xml.Deserialize(stream);
                    stream.Close();
                    foreach (login t in u)
                    {
                        if ((login.user==t.user) & verifyMd5Hash(login.pass,t.pass))
                        {
                            type=2;
                            if (verifyMd5Hash(login.user + getMd5Hash(login.pass) + "1", t.type)) type = 1;
                            if (verifyMd5Hash(login.user + getMd5Hash(login.pass) + "0", t.type)) type = 0;
                        }
                    }
                }
            }
            if (type < 3)
            {
                fl.Close();
                
                xml = new XmlSerializer(typeof(List<Patient>));
                DeCrypFile("temp.temp", login.adress + "\\Patient.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                stream = new FileStream("temp.temp", FileMode.Open, FileAccess.Read);
                lPatient = (List<Patient>)xml.Deserialize(stream);
                stream.Close();
                
                xml = new XmlSerializer(typeof(List<EpiAtt>));
                DeCrypFile("temp.temp", login.adress + "\\EpiAtt.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                stream = new FileStream("temp.temp", FileMode.Open, FileAccess.Read);
                lEpiAtt = (List<EpiAtt>)xml.Deserialize(stream);
                stream.Close();
                
                xml = new XmlSerializer(typeof(List<etiologAtt>));
                DeCrypFile("temp.temp", login.adress + "\\EtiAtt.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                stream = new FileStream("temp.temp", FileMode.Open, FileAccess.Read);
                lEtiAtt = (List<etiologAtt>)xml.Deserialize(stream);
                stream.Close();
                
                xml = new XmlSerializer(typeof(List<organ>));
                DeCrypFile("temp.temp", login.adress + "\\Organ.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                stream = new FileStream("temp.temp", FileMode.Open, FileAccess.Read);
                lOrgan = (List<organ>)xml.Deserialize(stream);
                stream.Close();

                xml = new XmlSerializer(typeof(List<Osmotr>));
                DeCrypFile("temp.temp", login.adress + "\\Sdn.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                stream = new FileStream("temp.temp", FileMode.Open, FileAccess.Read);
                lSdn = (List<Osmotr>)xml.Deserialize(stream);
                stream.Close();
                
                xml = new XmlSerializer(typeof(List<OAKNorm>));
                DeCrypFile("temp.temp", login.adress + "\\LON.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                stream = new FileStream("temp.temp", FileMode.Open, FileAccess.Read);
                lON = (List<OAKNorm>)xml.Deserialize(stream);
                stream.Close();
                
                xml = new XmlSerializer(typeof(List<Prirost>));
                DeCrypFile("temp.temp", login.adress + "\\LAV.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                stream = new FileStream("temp.temp", FileMode.Open, FileAccess.Read);
                lAV = (List<Prirost>)xml.Deserialize(stream);
                stream.Close();

                xml = new XmlSerializer(typeof(List<Prirost>));
                DeCrypFile("temp.temp", login.adress + "\\LAR.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                stream = new FileStream("temp.temp", FileMode.Open, FileAccess.Read);
                lAR = (List<Prirost>)xml.Deserialize(stream);
                stream.Close();
                
                refresh();
                timer1.Enabled = true;
            }
        }

        public void loginingauto(log log)
        {
            login = log;
            XmlSerializer xml;
            FileStream stream;
            xml = new XmlSerializer(typeof(log));
            stream = new FileStream("Login.xml", FileMode.Create, FileAccess.ReadWrite);
            xml.Serialize(stream, login);
            stream.Close();
            type = 3;
            if (login.type)
            {
                if (File.Exists(login.adress + "\\Users.xml"))
                {
                    xml = new XmlSerializer(typeof(List<login>));
                    stream = new FileStream(login.adress + "\\Users.xml", FileMode.Open, FileAccess.Read);
                    List<login> u = (List<login>)xml.Deserialize(stream);
                    stream.Close();
                    foreach (login t in u)
                    {
                        if (verifyMd5Hash(login.user, t.user) & verifyMd5Hash(login.pass, t.pass))
                        {
                            type = 2;
                            if (verifyMd5Hash(login.user + login.pass + "1", t.type)) type = 1;
                            if (verifyMd5Hash(login.user + login.pass + "0", t.type)) type = 0;

                        }
                    }
                }
            }
            if (type < 3)
            {
                fl.Close();

                xml = new XmlSerializer(typeof(List<Patient>));
                DeCrypFile("temp.temp", "temp\\Patient.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                stream = new FileStream("temp.temp", FileMode.Open, FileAccess.Read);
                lPatient = (List<Patient>)xml.Deserialize(stream);
                stream.Close();

                xml = new XmlSerializer(typeof(List<EpiAtt>));
                DeCrypFile("temp.temp", "temp\\EpiAtt.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                stream = new FileStream("temp.temp", FileMode.Open, FileAccess.Read);
                lEpiAtt = (List<EpiAtt>)xml.Deserialize(stream);
                stream.Close();

                xml = new XmlSerializer(typeof(List<etiologAtt>));
                DeCrypFile("temp.temp", "temp\\EtiAtt.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                stream = new FileStream("temp.temp", FileMode.Open, FileAccess.Read);
                lEtiAtt = (List<etiologAtt>)xml.Deserialize(stream);
                stream.Close();

                xml = new XmlSerializer(typeof(List<organ>));
                DeCrypFile("temp.temp", "temp\\Organ.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                stream = new FileStream("temp.temp", FileMode.Open, FileAccess.Read);
                lOrgan = (List<organ>)xml.Deserialize(stream);
                stream.Close();

                xml = new XmlSerializer(typeof(List<Osmotr>));
                DeCrypFile("temp.temp", "temp\\Sdn.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                stream = new FileStream("temp.temp", FileMode.Open, FileAccess.Read);
                lSdn = (List<Osmotr>)xml.Deserialize(stream);
                stream.Close();

                xml = new XmlSerializer(typeof(List<OAKNorm>));
                DeCrypFile("temp.temp", "temp\\LON.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                stream = new FileStream("temp.temp", FileMode.Open, FileAccess.Read);
                lON = (List<OAKNorm>)xml.Deserialize(stream);
                stream.Close();

                xml = new XmlSerializer(typeof(List<Prirost>));
                DeCrypFile("temp.temp", "temp\\LAV.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                stream = new FileStream("temp.temp", FileMode.Open, FileAccess.Read);
                lAV = (List<Prirost>)xml.Deserialize(stream);
                stream.Close();

                xml = new XmlSerializer(typeof(List<Prirost>));
                DeCrypFile("temp.temp", "temp\\LAR.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                stream = new FileStream("temp.temp", FileMode.Open, FileAccess.Read);
                lAR = (List<Prirost>)xml.Deserialize(stream);
                stream.Close();

                refresh();
                timer1.Enabled = true;
            }
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            Patient p1 = new Patient();
            int n = 0;
            foreach (Patient p in lPatient)
            {
                if (p.id > n)
                    n = p.id;
            }
            p1.id = n + 1;
            p1.Date_of_birth = DateTime.Now;
            p1.Statement_date = DateTime.Now;
            lPatient.Add(p1);
            Pasport pF = new Pasport(p1.id, this);
            pF.ShowDialog();              
        }

        public int itnPatietn(int id)
        {
            int n = -1;
            int num=0;
            foreach (Patient p in lPatient)
            {
                if (p.id == id)
                    n = num;
                num++;
            }
            return n;
        }

        public TreeViewEventArgs DetiTreEvent;
        public void DetiTre_AfterSelect(object sender, TreeViewEventArgs e)
        {
            DetiTreEvent = e;
            if (Convert.ToInt32(e.Node.Tag) >= 0)
            {
                int id = Convert.ToInt32(e.Node.Tag);
                 List<ReportParameter> paramList = new List<ReportParameter>();
                paramList.Add(new ReportParameter("ФИО", lPatient[itnPatietn(id)].This.Surname + " " + lPatient[itnPatietn(id)].This.Name + " " + lPatient[itnPatietn(id)].This.Patronymic));
                paramList.Add(new ReportParameter("Дата", lPatient[itnPatietn(id)].Statement_date.ToShortDateString()));
               
                reportViewer1.LocalReport.SetParameters(paramList);
                List<ReportEdpidemcs> r = new List<ReportEdpidemcs>();

                foreach (etiologAtt e1 in lEtiAtt)
                {
                    ReportEdpidemcs r1 = new ReportEdpidemcs();
                    r1.Этиолог_диагноз_признак = e1.name;
                    r1.Номер = 1;
                    if (lPatient[itnPatietn(id)].Diagnoz != null)
                    {
                        if (lPatient[itnPatietn(id)].Diagnoz.etiolog.IndexOf(e1.id) >= 0)
                        {
                            r1.Да = "+";
                            r1.Нет = "";

                        }
                        else
                        {
                            r1.Да = "";
                            r1.Нет = "+";
                        }
                    }
                    r.Add(r1);

                }
                this.reportViewer1.LocalReport.DataSources.Clear();
                this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("D", r));
                reportViewer1.RefreshReport();
            }
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            refresh();
        }

        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            if (Convert.ToInt32(DetiTre.SelectedNode.Tag) >= 0)
            {
                Pasport pF = new Pasport(Convert.ToInt32(DetiTre.SelectedNode.Tag), this);
                pF.ShowDialog();
            }
        }

        private void toolStripButton4_Click(object sender, EventArgs e)
        {
            formConfig CF = new formConfig(this);
            CF.ShowDialog();
        }

        private void выйтиToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AboutBox1 ab = new AboutBox1();
            ab.ShowDialog();
        }

        private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            XmlSerializer xml;
            FileStream stream;
            xml = new XmlSerializer(typeof(List<Patient>));
            stream = new FileStream("Patient.xml", FileMode.Create, FileAccess.ReadWrite);
            xml.Serialize(stream, lPatient);
            stream.Close();
            xml = new XmlSerializer(typeof(List<EpiAtt>));
            stream = new FileStream("EpiAtt.xml", FileMode.Create, FileAccess.ReadWrite);
            xml.Serialize(stream, lEpiAtt);
            stream.Close();
            xml = new XmlSerializer(typeof(List<etiologAtt>));
            stream = new FileStream("EtiAtt.xml", FileMode.Create, FileAccess.ReadWrite);
            xml.Serialize(stream, lEtiAtt);
            stream.Close();
            xml = new XmlSerializer(typeof(List<organ>));
            stream = new FileStream("Organ.xml", FileMode.Create, FileAccess.ReadWrite);
            xml.Serialize(stream, lOrgan);
            stream.Close();
            xml = new XmlSerializer(typeof(List<Osmotr>));
            stream = new FileStream("Sdn.xml", FileMode.Create, FileAccess.ReadWrite);
            xml.Serialize(stream, lSdn);
            stream.Close();
            xml = new XmlSerializer(typeof(List<OAKNorm>));
            stream = new FileStream("LON.xml", FileMode.Create, FileAccess.ReadWrite);
            xml.Serialize(stream, lON);
            stream.Close();
            xml = new XmlSerializer(typeof(List<Prirost>));
            stream = new FileStream("LAV.xml", FileMode.Create, FileAccess.ReadWrite);
            xml.Serialize(stream, lAV);
            stream.Close();
            xml = new XmlSerializer(typeof(List<Prirost>));
            stream = new FileStream("LAR.xml", FileMode.Create, FileAccess.ReadWrite);
            xml.Serialize(stream, lAR);
            stream.Close();
        
            refresh();
        }

        private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            XmlSerializer xml;
            FileStream stream;
            xml = new XmlSerializer(typeof(List<Patient>));
            stream = new FileStream("Patient.xml", FileMode.Open, FileAccess.Read);
            lPatient = (List<Patient>)xml.Deserialize(stream);
            stream.Close();
            xml = new XmlSerializer(typeof(List<EpiAtt>));
            stream = new FileStream("EpiAtt.xml", FileMode.Open, FileAccess.Read);
            lEpiAtt = (List<EpiAtt>)xml.Deserialize(stream);
            stream.Close();
            refresh();
            
                xml = new XmlSerializer(typeof(List<etiologAtt>));
                stream = new FileStream("EtiAtt.xml", FileMode.Open, FileAccess.Read);
                lEtiAtt = (List<etiologAtt>)xml.Deserialize(stream);
                stream.Close();
                refresh();
                xml = new XmlSerializer(typeof(List<organ>));
                stream = new FileStream("Organ.xml", FileMode.Open, FileAccess.Read);
                lOrgan = (List<organ>)xml.Deserialize(stream);
                stream.Close();

                 xml = new XmlSerializer(typeof(List<Osmotr>));
                 stream = new FileStream("Sdn.xml", FileMode.Open, FileAccess.Read);
                 lSdn = (List<Osmotr>)xml.Deserialize(stream);
                 stream.Close();
                 xml = new XmlSerializer(typeof(List<OAKNorm>));
                 stream = new FileStream("LON.xml", FileMode.Open, FileAccess.Read);
                 lON = (List<OAKNorm>)xml.Deserialize(stream);
                 stream.Close();
                 xml = new XmlSerializer(typeof(List<Prirost>));
                 stream = new FileStream("LAV.xml", FileMode.Open, FileAccess.Read);
                 lAV = (List<Prirost>)xml.Deserialize(stream);
                 stream.Close();
                 xml = new XmlSerializer(typeof(List<Prirost>));
                 stream = new FileStream("LAR.xml", FileMode.Open, FileAccess.Read);
                 lAR = (List<Prirost>)xml.Deserialize(stream);
                 stream.Close();

                refresh();
        }

        private void toolStripButton5_Click(object sender, EventArgs e)
        {
            if (Convert.ToInt32(DetiTre.SelectedNode.Tag) >= 0)
            {
                Epidem eF = new Epidem(Convert.ToInt32(DetiTre.SelectedNode.Tag), this);
                eF.ShowDialog();
            }
        }


        private void toolStripButton6_Click(object sender, EventArgs e)
        {
            if (Convert.ToInt32(DetiTre.SelectedNode.Tag) >= 0)
            {
                Diagn eF = new Diagn(Convert.ToInt32(DetiTre.SelectedNode.Tag), this);
                eF.ShowDialog();
            }
        }

        private void toolStripButton7_Click(object sender, EventArgs e)
        {
            if (Convert.ToInt32(DetiTre.SelectedNode.Tag) >= 0)
            {
                ef = new Lab(Convert.ToInt32(DetiTre.SelectedNode.Tag), this);
                ef.ShowDialog();
            }
        }

        private void toolStripButton8_Click(object sender, EventArgs e)
        {
            if (Convert.ToInt32(DetiTre.SelectedNode.Tag) >= 0)
            {
                dF = new Dinam(Convert.ToInt32(DetiTre.SelectedNode.Tag), this);
                dF.ShowDialog();
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            this.reportViewer1.RefreshReport();
        }


        private void toolStripButton9_Click(object sender, EventArgs e)
        {
            if (type == 0)
            {
                XmlSerializer xml;
                FileStream stream;

                xml = new XmlSerializer(typeof(List<Patient>));
                stream = new FileStream("temp.temp", FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, lPatient);
                stream.Close();
                EnCrypFile("temp.temp", login.adress + "\\Patient.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");

                xml = new XmlSerializer(typeof(List<EpiAtt>));
                stream = new FileStream("temp.temp", FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, lEpiAtt);
                stream.Close();
                EnCrypFile("temp.temp", login.adress + "\\EpiAtt.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");

                xml = new XmlSerializer(typeof(List<etiologAtt>));
                stream = new FileStream("temp.temp", FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, lEtiAtt);
                stream.Close();
                EnCrypFile("temp.temp", login.adress + "\\EtiAtt.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");

                xml = new XmlSerializer(typeof(List<organ>));
                stream = new FileStream("temp.temp", FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, lOrgan);
                stream.Close();
                EnCrypFile("temp.temp", login.adress + "\\Organ.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");

                xml = new XmlSerializer(typeof(List<Osmotr>));
                stream = new FileStream("temp.temp", FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, lSdn);
                stream.Close();
                EnCrypFile("temp.temp", login.adress + "\\Sdn.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");

                xml = new XmlSerializer(typeof(List<OAKNorm>));
                stream = new FileStream("temp.temp", FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, lON);
                stream.Close();
                EnCrypFile("temp.temp", login.adress + "\\LON.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");

                xml = new XmlSerializer(typeof(List<Prirost>));
                stream = new FileStream("temp.temp", FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, lAV);
                stream.Close();
                EnCrypFile("temp.temp", login.adress + "\\LAV.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");

                xml = new XmlSerializer(typeof(List<Prirost>));
                stream = new FileStream("temp.temp", FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, lAR);
                stream.Close();
                EnCrypFile("temp.temp", login.adress + "\\LAR.xml", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");

                refresh();
                if (File.Exists("autosave.xm"))
                File.Delete("autosave.xml");
                if (Directory.Exists("temp"))
                {
                    foreach (string s in Directory.GetFiles("temp"))
                        File.Delete(s);
                    Directory.Delete("temp");
                }
            }
            else
            {
                MessageBox.Show("К сажелению у вас не хватает прав для изменения данных");
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            autosave();
        }

        private void EnCrypFile(string ifile, string ofile, string key, string iv)
        {
            byte[] KEY = System.Text.UTF8Encoding.UTF8.GetBytes(key);
            byte[] IV = System.Text.UTF8Encoding.UTF8.GetBytes(iv);

            if (File.Exists(ifile))
            {
                FileStream stream;
                Aes ral = Aes.Create();
                stream = new FileStream(ifile, FileMode.Open, FileAccess.Read);
                CryptoStream s = new CryptoStream(stream, ral.CreateEncryptor(KEY, IV), CryptoStreamMode.Read);
                FileStream stream1;
                stream1 = new FileStream(ofile, FileMode.Create, FileAccess.Write);
                s.CopyTo(stream1);
                stream1.Close();
                stream.Close();
            }
        }

        private void DeCrypFile(string ofile, string ifile, string key, string iv)
        {
            byte[] KEY = System.Text.UTF8Encoding.UTF8.GetBytes(key);
            byte[] IV = System.Text.UTF8Encoding.UTF8.GetBytes(iv);

            if (File.Exists(ifile))
            {
                FileStream stream;
                Aes ral = Aes.Create();
                stream = new FileStream(ifile, FileMode.Open, FileAccess.Read);
                CryptoStream s = new CryptoStream(stream, ral.CreateDecryptor(KEY, IV), CryptoStreamMode.Read);
                FileStream stream1;
                stream1 = new FileStream(ofile, FileMode.Create, FileAccess.Write);
                s.CopyTo(stream1);
                s.Close();
                stream1.Close();
                stream.Close();
            }
        }

        public void EnCriptDirectory(string dir)
        {
            if (Directory.Exists(dir))
            {
                string[] d = Directory.GetFiles(dir);
                foreach (string s in d)
                {
                    EnCrypFile(s, "temp.temp", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                    File.Replace("temp.temp", s, null);
                    File.Delete("temp.temp");
                }
            }
        }

        public void DeCriptDirectory(string dir)
        {
            if (Directory.Exists(dir))
            {
                string[] d = Directory.GetFiles(dir);
                foreach (string s in d)
                {
                    DeCrypFile(s, "temp.temp", "iwemc83^KL&H*MF^", "8f7bktq2ehfRJEMC");
                    File.Replace("temp.temp", s, null);
                    File.Delete("temp.temp");
                }
            }
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (File.Exists("autosave.xml"))
            File.Delete("autosave.xml");
            if (Directory.Exists("temp"))
            foreach (string s in Directory.GetFiles("temp"))
                File.Delete(s);
            if (Directory.Exists("temp"))
            Directory.Delete("temp");
        }

        private void toolStripButton10_Click_1(object sender, EventArgs e)
        {
            grf f = new grf(this);
            f.ShowDialog();
        }

        private void toolStripButton11_Click(object sender, EventArgs e)
        {
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                List<Global> g = new List<Global>();
                foreach (Patient p in lPatient)
                {
                    int d = (p.Statement_date - p.Date_of_birth).Days;
                    int m = 0;
                    int y = 0;
                    int n = 0;
                    while (d > 365)
                    {
                        d -= 365;
                        y++;
                    }
                    while (d > 30)
                    {
                        d -= 30;
                        m++;
                    }
                    if ((y < 1) & (m >= 1))
                        while (d > 7)
                        {
                            d -= 7;
                            n++;
                        }
                    if ((m >= 1) & (n == 4))
                    {
                        m++;
                        n = 0;
                    }
                    string s = "";
                    if (y > 0)
                    {
                        s = Convert.ToString(y) + "год(лет) ";
                        if (m > 0) s += Convert.ToString(m) + "месяц(а)";
                    }
                    else
                    {
                        if (m >= 1)
                        {
                            s = Convert.ToString(m) + "месяц(а) ";
                            if (n > 0) s += Convert.ToString(n) + "недели";
                        }
                        else
                        {
                            s = Convert.ToString(d) + "дней(я) ";
                        }
                    }
                    Global t = new Global();
                    t.ФИО = p.This.Surname + " " + p.This.Name + " " + p.This.Patronymic;
                    t.Дата_рождения = p.Date_of_birth;
                    t.Возрост_на_момент_постановки = s;
                    float sum = 0;
                    if (p.Epidenamnez != null)
                    {
                        foreach (EpiAtt e1 in lEpiAtt)
                            if (p.Epidenamnez.Att.IndexOf(e1.Номер) >= 0) sum += e1.Значние;
                        if (sum <= 12)
                            t.Заключение_по_эпиданамнезу = "Диагноз ВУИ маловероятен";
                        if ((sum <= 20) & (sum > 12))
                            t.Заключение_по_эпиданамнезу = "Диагноз ВУИ сомнителен";
                        if (sum > 21)
                            t.Заключение_по_эпиданамнезу = "Вероятность ВУИ очень велика";

                        if (p.Epidenamnez.Scrining != null)
                        {
                            t.torch = new List<ReportScrin>();

                            foreach (Scrin e1 in p.Epidenamnez.Scrining)
                            {
                                ReportScrin r1 = new ReportScrin();
                                r1.Дата = e1.date;
                                r1.Серологические_иледования = "IgG";
                                r1.ВПГ = e1.data[0];
                                r1.ЦМВ = e1.data[1];
                                r1.Токсопл = e1.data[2];
                                r1.Хламидии = e1.data[3];
                                t.torch.Add(r1);
                                ReportScrin r2 = new ReportScrin();
                                r2.Дата = e1.date;
                                r2.Серологические_иледования = "IgM";
                                r2.ВПГ = e1.data[4];
                                r2.ЦМВ = e1.data[5];
                                r2.Токсопл = e1.data[6];
                                r2.Хламидии = e1.data[7];
                                t.torch.Add(r2);
                                ReportScrin r6 = new ReportScrin();
                                r6.Дата = e1.date;
                                r6.Серологические_иледования = "ИА";
                                r6.ВПГ = e1.data[8];
                                r6.ЦМВ = e1.data[9];
                                r6.Токсопл = e1.data[10];
                                r6.Хламидии = e1.data[11];
                                t.torch.Add(r6);
                            }
                        }
                    }
                    if (p.Diagnoz != null)
                    {
                        t.МКБ = p.Diagnoz.mkb;
                        string st = "";
                        foreach (int i in p.Diagnoz.organ)
                            s += " " + lOrgan[i].name + ",";
                        if (p.Diagnoz.alterOrgan != "") s += " " + p.Diagnoz.alterEtiolog;
                        st.TrimEnd(',');
                        t.Пораженные_органы = st;
                        t.Этиологически_диагноз = new List<ReportEdpidemcs>();
                        foreach (etiologAtt e1 in lEtiAtt)
                        {
                            ReportEdpidemcs r1 = new ReportEdpidemcs();
                            r1.Этиолог_диагноз_признак = e1.name;
                            r1.Номер = 1;
                            if (p.Diagnoz.etiolog.IndexOf(e1.id) >= 0)
                            {
                                r1.Да = "+";
                                r1.Нет = "";

                            }
                            else
                            {
                                r1.Да = "";
                                r1.Нет = "+";
                            }
                            t.Этиологически_диагноз.Add(r1);

                        }
                        t.Диагноз_другое = p.Diagnoz.alterEtiolog;
                    }
                    if (p.Labis != null)
                    {
                        if (p.Labis.oak != null)
                        {
                            t.ОАК = new List<string>();

                            foreach (OAK o in p.Labis.oak)
                            {
                                string str = "";
                                str = o.Дата.ToShortDateString() + " ";
                                d = (o.Дата - p.Date_of_birth).Days;
                                m = 0;
                                y = 0;
                                n = 0;
                                while (d > 365)
                                {
                                    d -= 365;
                                    y++;
                                }
                                while (d > 30)
                                {
                                    d -= 30;
                                    m++;
                                }
                                if ((y < 1) & (m >= 1))
                                    while (d > 7)
                                    {
                                        d -= 7;
                                        n++;
                                    }
                                if ((m >= 1) & (n == 4))
                                {
                                    m++;
                                    n = 0;
                                }





                                int k = -1;
                                if (lON.Count > 0)
                                    if (sum <= lON[0].Месяц) k = 0;

                                for (int i = 1; i < lON.Count; i++)
                                {
                                    if ((sum > lON[i - 1].Месяц) & (lON[0].Месяц <= lON[i].Месяц)) k = i;
                                }
                                if (k >= 0)
                                {
                                    if (o.Лейкоциты * 1000 < lON[k].Лекоциты_Низ) str += "Лейкопения; ";
                                    if (o.Лейкоциты * 1000 > lON[k].Лекоциты_Верх) str += "Лейкоцитоз; ";
                                    if ((o.Лейкоциты * 10 * o.НФ) < lON[k].НФ_Низ) str += "Нейтропения; ";
                                    if ((o.НФ * o.Лейкоциты * 10) > lON[k].НФ_Верх) str += "Нейтрофилез; ";
                                    if ((o.Моноциты * o.Лейкоциты * 10) > lON[k].Моноциты_Верх) str += "Моноцитоз; ";


                                }

                                t.ОАК.Add(str);
                            }
                        }
                        if (p.Labis.im != null)
                        {
                            t.Ig = new List<string>();
                            foreach (Imuno o in p.Labis.im)
                            {
                                string str = "";
                                str = o.Дата.ToShortDateString() + " ";
                                d = (o.Дата - p.Date_of_birth).Days;
                                m = 0;
                                y = 0;
                                n = 0;
                                while (d > 365)
                                {
                                    d -= 365;
                                    y++;
                                }
                                while (d > 30)
                                {
                                    d -= 30;
                                    m++;
                                }
                                if ((y < 1) & (m >= 1))
                                    while (d > 7)
                                    {
                                        d -= 7;
                                        n++;
                                    }
                                if ((m >= 1) & (n == 4))
                                {
                                    m++;
                                    n = 0;
                                }
                                sum = y * 12 + m;
                                int k = -1;
                                if (lON.Count > 0)
                                    if (sum <= lON[0].Месяц) k = 0;

                                for (int i = 1; i < lON.Count; i++)
                                {
                                    if ((sum > lON[i - 1].Месяц) & (lON[0].Месяц <= lON[i].Месяц)) k = i;
                                }
                                if (k >= 0)
                                {
                                    if (o.IgA < lON[k].IgA_Низ) str += "Дифицит имуноглабулинов класса А; ";
                                    if (o.IgA > lON[k].IgA_Верх) str += "Избыток имуноглабулинов класса А; ";
                                    if (o.IgG < lON[k].IgG_Низ) str += "Дифицит имуноглабулинов класса G; ";
                                    if (o.IgG > lON[k].IgG_Верх) str += "Избыток имуноглабулинов класса G; ";
                                    if (o.IgM < lON[k].IgM_Низ) str += "Дифицит имуноглабулинов класса M; ";
                                    if (o.IgM > lON[k].IgM_Верх) str += "Избыток имуноглабулинов класса M; ";
                                }
                                t.Ig.Add(str);
                            }
                        }
                        if (p.Labis.so != null)
                        {
                            t.Серологические_иследования = new List<ReportScrin>();
                            foreach (seroocc e1 in p.Labis.so)
                            {

                                d = (e1.date - p.Date_of_birth).Days;
                                m = 0;
                                y = 0;
                                n = 0;
                                while (d > 365)
                                {
                                    d -= 365;
                                    y++;
                                }
                                while (d > 30)
                                {
                                    d -= 30;
                                    m++;
                                }
                                if ((y < 1) & (m >= 1))
                                    while (d > 7)
                                    {
                                        d -= 7;
                                        n++;
                                    }
                                if ((m >= 1) & (n == 4))
                                {
                                    m++;
                                    n = 0;
                                }
                                s = "";
                                if (y > 0)
                                {
                                    s = Convert.ToString(y) + "год(лет) ";
                                    if (m > 0) s += Convert.ToString(m) + "месяц(а)";
                                }
                                else
                                {
                                    if (m >= 1)
                                    {
                                        s = Convert.ToString(m) + "месяц(а) ";
                                        if (n > 0) s += Convert.ToString(n) + "недели";
                                    }
                                    else
                                    {
                                        s = Convert.ToString(d) + "дней(я) ";
                                    }
                                }

                                ReportScrin r1 = new ReportScrin();
                                r1.Возрост = s;
                                r1.Дата = e1.date;
                                r1.Серологические_иледования = "серонегативность";
                                r1.ВПГ = e1.снвпг;
                                r1.ЦМВ = e1.снцмв;
                                r1.Токсопл = "";
                                r1.Хламидии = "";
                                t.Серологические_иследования.Add(r1);
                                ReportScrin r2 = new ReportScrin();
                                r2.Дата = e1.date;
                                r2.Возрост = s;
                                r2.Серологические_иледования = "высокий титр антител IgG";
                                r2.ВПГ = e1.IgGвпг;
                                r2.ЦМВ = e1.IgGцмв;
                                r2.Токсопл = e1.IgGт;
                                r2.Хламидии = "";
                                t.Серологические_иследования.Add(r2);
                                ReportScrin r3 = new ReportScrin();
                                r3.Дата = e1.date;
                                r3.Возрост = s;
                                r3.Серологические_иледования = "серопозитивность";
                                r3.ВПГ = "";
                                r3.ЦМВ = "";
                                r3.Токсопл = "";
                                r3.Хламидии = e1.спх;
                                t.Серологические_иследования.Add(r3);
                                ReportScrin r4 = new ReportScrin();
                                r4.Дата = e1.date;
                                r4.Возрост = s;
                                r4.Серологические_иледования = "IgM";
                                r4.ВПГ = e1.IgMвпг;
                                r4.ЦМВ = e1.IgGцмв;
                                r4.Токсопл = e1.IgMт;
                                r4.Хламидии = e1.IgMх;
                                t.Серологические_иследования.Add(r4);
                                ReportScrin r5 = new ReportScrin();
                                r5.Дата = e1.date;
                                r5.Возрост = s;
                                r5.Серологические_иледования = "низкоавидные антитела";
                                r5.ВПГ = e1.НААвпг;
                                r5.ЦМВ = e1.НААцмв;
                                r5.Токсопл = e1.НААт;
                                r5.Хламидии = e1.НААх;
                                t.Серологические_иследования.Add(r5);
                            }
                        }
                        if (p.Labis.pcr != null)
                        {
                            t.ПЦР = new List<pcrreport>();
                            foreach (PCR e1 in p.Labis.pcr)
                            {
                                pcrreport u1 = new pcrreport();
                                pcrreport u2 = new pcrreport();
                                pcrreport u3 = new pcrreport();
                                pcrreport u4 = new pcrreport();
                                u1.Дата = e1.Дата;
                                u1.ПЦР = "ВПГ";
                                u1.Среда = e1.ВпгСреда;
                                u1.Рузультат = e1.ВпгРез;
                                t.ПЦР.Add(u1);
                                u2.Дата = e1.Дата;
                                u2.ПЦР = "ЦМВ";
                                u2.Среда = e1.ЦмвСреда;
                                u2.Рузультат = e1.ЦмвРез;
                                t.ПЦР.Add(u2);
                                u3.Дата = e1.Дата;
                                u3.ПЦР = "хламидии";
                                u3.Среда = e1.ХламидииСреда;
                                u3.Рузультат = e1.ХламидииРез;
                                t.ПЦР.Add(u3);
                                u4.Дата = e1.Дата;
                                u4.ПЦР = "токсоплазма";
                                u4.Среда = e1.ТоксоплазмаСреда;
                                u4.Рузультат = e1.ТоксоплазмаРез;
                                t.ПЦР.Add(u4);

                            }
                        }
                    }
                    t.Физическое_развитие = new List<RVReport>();
                    if (p.Fiz != null)
                        foreach (Fizcs f in p.Fiz)
                        {
                            RVReport t1 = new RVReport();
                            t1.Месяц = Convert.ToSingle(f.Месяц) + "месяц";
                            t1.Масса_фактическая = f.Масса;
                            t1.Рост_фактический = f.Рост;
                            if ((f.Месяц < 13) & (f.Месяц > 0))
                            {
                                if ((p.Growth <= 1500) & (p.Growth > 1000))
                                {
                                    t1.Масса_долженствующая = p.Growth + lAV[f.Месяц - 1].От_1001_до_1500;
                                    t1.Рост_долженствующий = p.Weight + lAR[f.Месяц - 1].От_1001_до_1500 / 10;
                                }
                                if ((p.Growth <= 2000) & (p.Growth > 1500))
                                {
                                    t1.Масса_долженствующая = p.Growth + lAV[f.Месяц - 1].От_1501_до_2000;
                                    t1.Рост_долженствующий = p.Weight + lAR[f.Месяц - 1].От_1501_до_2000 / 10;
                                }
                                if ((p.Growth <= 2500) & (p.Growth > 2000))
                                {
                                    t1.Масса_долженствующая = p.Growth + lAV[f.Месяц - 1].От_2001_до_2500;
                                    t1.Рост_долженствующий = p.Weight + lAR[f.Месяц - 1].От_2001_до_2500 / 10;
                                }
                                if ((p.Growth <= 1000) & (p.Growth > 800))
                                {
                                    t1.Масса_долженствующая = p.Growth + lAV[f.Месяц - 1].От_800_до_1000;
                                    t1.Рост_долженствующий = p.Weight + lAR[f.Месяц - 1].От_800_до_1000 / 10;
                                }
                                if ((p.Growth > 2500))
                                {
                                    t1.Масса_долженствующая = p.Growth + lAV[f.Месяц - 1].Доношеные;
                                    t1.Рост_долженствующий = p.Weight + lAR[f.Месяц - 1].Доношеные / 10;
                                }
                            }
                            if ((f.Месяц > 12) & (f.Месяц <= 120))
                            {
                                t1.Масса_долженствующая = 10 * 2 * (f.Месяц / 12);
                            }
                            if ((f.Месяц > 12) & (f.Месяц <= 48))
                            {
                                t1.Рост_долженствующий = 100 - 8 * (4 - (f.Месяц / 12));
                            }
                            if ((f.Месяц > 48))
                            {
                                t1.Рост_долженствующий = 100 + 6 * (4 - (f.Месяц / 12));
                            }
                            if ((t1.Масса_долженствующая != 0) | (t1.Рост_долженствующий != 0))
                            {
                                if (Math.Abs(t1.Масса_долженствующая - t1.Масса_фактическая) / (t1.Масса_долженствующая * 1.0) <= 0.1)
                                {
                                    t1.Результат += "эйтрофия; ";
                                }
                                if (((t1.Масса_долженствующая - t1.Масса_фактическая) / (t1.Масса_долженствующая * 1.0) > 0.1) & ((t1.Масса_долженствующая - t1.Масса_фактическая) / (t1.Масса_долженствующая * 1.0) <= 0.2))
                                {
                                    t1.Результат += "гипотрофия 1 степени; ";
                                }
                                if (((t1.Масса_долженствующая - t1.Масса_фактическая) / (t1.Масса_долженствующая * 1.0) > 0.2) & ((t1.Масса_долженствующая - t1.Масса_фактическая) / (t1.Масса_долженствующая * 1.0) <= 0.3))
                                {
                                    t1.Результат += "гипотрофия 2 степени; ";
                                }
                                if (((t1.Масса_долженствующая - t1.Масса_фактическая) / (t1.Масса_долженствующая * 3.0) > 0.3))
                                {
                                    t1.Результат += "гипотрофия 3 степени; ";
                                }
                                if (((t1.Масса_долженствующая - t1.Масса_фактическая) / (t1.Масса_долженствующая * 1.0) < -0.1) & ((t1.Масса_долженствующая - t1.Масса_фактическая) / (t1.Масса_долженствующая * 1.0) >= -0.2))
                                {
                                    t1.Результат += "паратрофия 1 степени; ";
                                }
                                if (((t1.Масса_долженствующая - t1.Масса_фактическая) / (t1.Масса_долженствующая * 1.0) < -0.2) & ((t1.Масса_долженствующая - t1.Масса_фактическая) / (t1.Масса_долженствующая * 1.0) >= -0.3))
                                {
                                    t1.Результат += "паратрофия 2 степени; ";
                                }
                                if (((t1.Масса_долженствующая - t1.Масса_фактическая) / (t1.Масса_долженствующая * 1.0) < -0.3))
                                {
                                    t1.Результат += "паратрофия 3 степени; ";
                                }
                                if (Math.Abs(t1.Рост_долженствующий - t1.Рост_фактический) / (t1.Рост_долженствующий * 1.0) <= 0.1)
                                {
                                    t1.Результат += "мезосомия; ";
                                }
                                if (((t1.Рост_долженствующий - t1.Рост_фактический) / (t1.Рост_долженствующий * 1.0) > 0.1))
                                {
                                    t1.Результат += "микросомия; ";
                                }
                                if (((t1.Рост_долженствующий - t1.Рост_фактический) / (t1.Рост_долженствующий * 1.0) < -0.1))
                                {
                                    t1.Результат += "макросомия; ";
                               }
                            }
                            t.Физическое_развитие.Add(t1);
                        }
                    if (p.Rez != null)
                    {
                        t.Резистентность = new List<rezistreport>();
                        foreach (Rez f in p.Rez)
                        {
                            rezistreport t1 = new rezistreport();
                            t1.Количество_ОИЗ = f.Заболеваний;
                            t1.Количество_месяцев = f.Месяц;
                            t1.Аллергия = f.Аллергический_синдром;
                            float t2 = f.Заболеваний;
                            t1.IОЗ = t2 / f.Месяц;
                            if (t1.IОЗ <= 0.32)
                                t1.Заключение = "хорошая резистентность";
                            if ((t1.IОЗ <= 0.49) & (t1.IОЗ > 0.33))
                                t1.Заключение = "сниженная  резистентность";
                            if ((t1.IОЗ <= 0.66) & (t1.IОЗ > 0.5))
                                t1.Заключение = "низкая  резистентность";
                            if ((t1.IОЗ > 0.66))
                                t1.Заключение = "очень низкая  резистентность";
                            t.Резистентность.Add(t1);
                        }
                    }
                    if (p.Gr != null)
                    {
                        t.Группа_здоровья = new List<groupzdreport>();
                        foreach (Group f in p.Gr)
                        {
                            groupzdreport t1 = new groupzdreport();
                            t1.Месяц = f.Месяц;
                            t1.Группа_здоровья = f.Группа_здоровья;
                            t1.Результат = f.Hезультат_наблюдения;
                            t.Группа_здоровья.Add(t1);
                        }
                    }
                    g.Add(t);
                }
                this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet2", g));
                XmlSerializer xml;
                FileStream stream;
                xml = new XmlSerializer(typeof(List<Global>));
                stream = new FileStream(saveFileDialog1.FileName, FileMode.Create, FileAccess.ReadWrite);
                xml.Serialize(stream, g);
                stream.Close();
            }
        }

        private void toolStripMenuItem1_Click(object sender, EventArgs e)
        {
            feedback f = new feedback();
            f.ShowDialog();
        }

        private void справкаToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("help.chm");
        }

    }
}
